
public class Something {
/*	Instruction executed: 82243776 in 4.187 seconds.
	Emulated clock speed: 18.73269091365387 MHz

	Branch targets: 
	0xa000001c 
	0xa0000028 
	0xa0000040 
	0xa0000074 
	0xa0000094 
	0xa00000ac 
	0xa00000c8 
	0xa00000d0 
*/
	static long _rs,_rt,_immed;
	
	// BRANCH/JUMP TARGET: 0xa000001c
	public class A000001C {

		public void execute() {

			//0xa000001c 
			//0x8fbf0014 
			//LW
			mips.CPU.GPR[31] = mips.CPU.readWord(mips.CPU.GPR[29] + 20);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000020 
			//0x8fbe0010 
			//LW
			mips.CPU.GPR[30] = mips.CPU.readWord(mips.CPU.GPR[29] + 16);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000024 
			//0x27bd0020 
			//ADDIU
			mips.CPU.GPR[29] = mips.CPU.GPR[29] + 32;  
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa000002c 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 4;
		}
	}

	// BRANCH/JUMP TARGET: 0xa0000028
	public class A0000028 {

		public void execute() {

			//0xa000002c 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 1;
		}
	}

	// BRANCH/JUMP TARGET: 0xa0000040
	public class A0000040 {

		public void execute() {

			//0xa0000040 
			//0x27bdffd8 
			//ADDIU
			mips.CPU.GPR[29] = mips.CPU.GPR[29] + -40;  
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000044 
			//0xafbf0020 
			//SW
			mips.CPU.writeWord(mips.CPU.GPR[31], mips.CPU.GPR[29] + 32);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000048 
			//0xafbe001c 
			//SW
			mips.CPU.writeWord(mips.CPU.GPR[30], mips.CPU.GPR[29] + 28);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa000004c 
			//0xafb00018 
			//SW
			mips.CPU.writeWord(mips.CPU.GPR[16], mips.CPU.GPR[29] + 24);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000050 
			//0x03a0f020 
			//ADD
			_rs = (long) (mips.CPU.GPR[29] & 0x00000000FFFFFFFFL);
			_rt = (long) (mips.CPU.GPR[0] & 0x00000000FFFFFFFFL);
			
			if ((_rs + _rt) > 0x00000000FFFFFFFFL) {
			
				// throw overflow exception
				throw new RuntimeException("OVERFLOW IN ADD INSTRUCTION AT PC: " + mips.CPU.PC);
			} 
			else {
			
				mips.CPU.GPR[30] = mips.CPU.GPR[29] + mips.CPU.GPR[0];
			}
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000054 
			//0xafc40028 
			//SW
			mips.CPU.writeWord(mips.CPU.GPR[4], mips.CPU.GPR[30] + 40);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000058 
			//0x8fc20028 
			//LW
			mips.CPU.GPR[2] = mips.CPU.readWord(mips.CPU.GPR[30] + 40);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa000005c 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000064 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 9;
		}
	}

	// BRANCH/JUMP TARGET: 0xa0000074
	public class A0000074 {

		public void execute() {

			//0xa0000074 
			//0x8fc30028 
			//LW
			mips.CPU.GPR[3] = mips.CPU.readWord(mips.CPU.GPR[30] + 40);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000078 
			//0x24020001 
			//ADDIU
			mips.CPU.GPR[2] = mips.CPU.GPR[0] + 1;  
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000080 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 3;
		}
	}

	// BRANCH/JUMP TARGET: 0xa0000094
	public class A0000094 {

		public void execute() {

			//0xa0000094 
			//0x8fc20028 
			//LW
			mips.CPU.GPR[2] = mips.CPU.readWord(mips.CPU.GPR[30] + 40);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa0000098 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa000009c 
			//0x2442ffff 
			//ADDIU
			mips.CPU.GPR[2] = mips.CPU.GPR[2] + -1;  
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000a0 
			//0x00402020 
			//ADD
			_rs = (long) (mips.CPU.GPR[2] & 0x00000000FFFFFFFFL);
			_rt = (long) (mips.CPU.GPR[0] & 0x00000000FFFFFFFFL);
			
			if ((_rs + _rt) > 0x00000000FFFFFFFFL) {
			
				// throw overflow exception
				throw new RuntimeException("OVERFLOW IN ADD INSTRUCTION AT PC: " + mips.CPU.PC);
			} 
			else {
			
				mips.CPU.GPR[4] = mips.CPU.GPR[2] + mips.CPU.GPR[0];
			}
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000a8 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 5;
		}
	}

	// BRANCH/JUMP TARGET: 0xa00000ac
	public class A00000AC {

		public void execute() {

			//0xa00000ac 
			//0x00408020 
			//ADD
			_rs = (long) (mips.CPU.GPR[2] & 0x00000000FFFFFFFFL);
			_rt = (long) (mips.CPU.GPR[0] & 0x00000000FFFFFFFFL);
			
			if ((_rs + _rt) > 0x00000000FFFFFFFFL) {
			
				// throw overflow exception
				throw new RuntimeException("OVERFLOW IN ADD INSTRUCTION AT PC: " + mips.CPU.PC);
			} 
			else {
			
				mips.CPU.GPR[16] = mips.CPU.GPR[2] + mips.CPU.GPR[0];
			}
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000b0 
			//0x8fc20028 
			//LW
			mips.CPU.GPR[2] = mips.CPU.readWord(mips.CPU.GPR[30] + 40);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000b4 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000b8 
			//0x2442fffe 
			//ADDIU
			mips.CPU.GPR[2] = mips.CPU.GPR[2] + -2;  
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000bc 
			//0x00402020 
			//ADD
			_rs = (long) (mips.CPU.GPR[2] & 0x00000000FFFFFFFFL);
			_rt = (long) (mips.CPU.GPR[0] & 0x00000000FFFFFFFFL);
			
			if ((_rs + _rt) > 0x00000000FFFFFFFFL) {
			
				// throw overflow exception
				throw new RuntimeException("OVERFLOW IN ADD INSTRUCTION AT PC: " + mips.CPU.PC);
			} 
			else {
			
				mips.CPU.GPR[4] = mips.CPU.GPR[2] + mips.CPU.GPR[0];
			}
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000c4 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 6;
		}
	}

	// BRANCH/JUMP TARGET: 0xa00000c8
	public class A00000C8 {

		public void execute() {

			//0xa00000c8 
			//0x02028021 
			//SPECIAL
			_rs = (long) (mips.CPU.GPR[16] & 0x00000000FFFFFFFFL);
			_rt = (long) (mips.CPU.GPR[2] & 0x00000000FFFFFFFFL);
			
			mips.CPU.GPR[16] = (int) ((_rs + _rt) & 0x00000000FFFFFFFFL);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000cc 
			//0xafd00010 
			//SW
			mips.CPU.writeWord(mips.CPU.GPR[16], mips.CPU.GPR[30] + 16);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000d0 
			//0x8fc20010 
			//LW
			mips.CPU.GPR[2] = mips.CPU.readWord(mips.CPU.GPR[30] + 16);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000d4 
			//0x03c0e820 
			//ADD
			_rs = (long) (mips.CPU.GPR[30] & 0x00000000FFFFFFFFL);
			_rt = (long) (mips.CPU.GPR[0] & 0x00000000FFFFFFFFL);
			
			if ((_rs + _rt) > 0x00000000FFFFFFFFL) {
			
				// throw overflow exception
				throw new RuntimeException("OVERFLOW IN ADD INSTRUCTION AT PC: " + mips.CPU.PC);
			} 
			else {
			
				mips.CPU.GPR[29] = mips.CPU.GPR[30] + mips.CPU.GPR[0];
			}
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000d8 
			//0x8fbf0020 
			//LW
			mips.CPU.GPR[31] = mips.CPU.readWord(mips.CPU.GPR[29] + 32);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000dc 
			//0x8fbe001c 
			//LW
			mips.CPU.GPR[30] = mips.CPU.readWord(mips.CPU.GPR[29] + 28);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000e0 
			//0x8fb00018 
			//LW
			mips.CPU.GPR[16] = mips.CPU.readWord(mips.CPU.GPR[29] + 24);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;


			//0xa00000e4 
			//0x27bd0028 
			//ADDIU
			mips.CPU.GPR[29] = mips.CPU.GPR[29] + 40;  
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;


			//0xa00000ec 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 9;
		}
	}

	// BRANCH/JUMP TARGET: 0xa00000d0
	public class A00000D0 {

		public void execute() {

			//0xa00000d0 
			//0x8fc20010 
			//LW
			mips.CPU.GPR[2] = mips.CPU.readWord(mips.CPU.GPR[30] + 16);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000d4 
			//0x03c0e820 
			//ADD
			_rs = (long) (mips.CPU.GPR[30] & 0x00000000FFFFFFFFL);
			_rt = (long) (mips.CPU.GPR[0] & 0x00000000FFFFFFFFL);
			
			if ((_rs + _rt) > 0x00000000FFFFFFFFL) {
			
				// throw overflow exception
				throw new RuntimeException("OVERFLOW IN ADD INSTRUCTION AT PC: " + mips.CPU.PC);
			} 
			else {
			
				mips.CPU.GPR[29] = mips.CPU.GPR[30] + mips.CPU.GPR[0];
			}
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000d8 
			//0x8fbf0020 
			//LW
			mips.CPU.GPR[31] = mips.CPU.readWord(mips.CPU.GPR[29] + 32);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000dc 
			//0x8fbe001c 
			//LW
			mips.CPU.GPR[30] = mips.CPU.readWord(mips.CPU.GPR[29] + 28);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;

			//0xa00000e0 
			//0x8fb00018 
			//LW
			mips.CPU.GPR[16] = mips.CPU.readWord(mips.CPU.GPR[29] + 24);
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;


			//0xa00000e4 
			//0x27bd0028 
			//ADDIU
			mips.CPU.GPR[29] = mips.CPU.GPR[29] + 40;  
			
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;


			//0xa00000ec 
			//0x00000020 
			//ADD
			mips.CPU.PC = mips.CPU.nPC;
			mips.CPU.nPC = mips.CPU.PC + 4;
		}

		public int blockLength() {

			return 7;
		}
	}


}
